switchroot: Bind mount /lib/modules from /ostree/modules
authorColin Walters <walters@verbum.org>
Sat, 11 Feb 2012 00:17:29 +0000 (19:17 -0500)
committerColin Walters <walters@verbum.org>
Sat, 11 Feb 2012 00:17:29 +0000 (19:17 -0500)
Since we have kernels outside of the tree, keep modules outside
too.

src/switchroot/ostree-switch-root.c

index 54c04959375bf171568306687f6e059b7911d75c..3e1155c03d318357fa941255111f274ab3625da7 100644 (file)
@@ -153,6 +153,7 @@ main(int argc, char *argv[])
   const char *initramfs_move_mounts[] = { "/dev", "/proc", "/sys", "/run", NULL };
   const char *toproot_bind_mounts[] = { "/home", "/root", "/tmp", NULL };
   const char *ostree_bind_mounts[] = { "/var", NULL };
+  /* ostree_readonly_bind_mounts /lib/modules -> modules */
   const char *readonly_bind_mounts[] = { "/bin", "/etc", "/lib", "/sbin", "/usr",
                                         NULL };
   const char *root_mountpoint = NULL;
@@ -282,6 +283,14 @@ main(int argc, char *argv[])
        }
     }
 
+  snprintf (srcpath, sizeof(srcpath), "/ostree/modules");
+  snprintf (destpath, sizeof(destpath), "/ostree/%s/lib/modules", ostree_target);
+  if (mount (srcpath, destpath, NULL, MS_MGC_VAL|MS_BIND, NULL) < 0)
+    {
+      perrorv ("failed to bind mount (class:bind) %s to %s", srcpath, destpath);
+      exit (1);
+    }
+
   for (i = 0; readonly_bind_mounts[i] != NULL; i++)
     {
       snprintf (destpath, sizeof(destpath), "/ostree/%s%s", ostree_target, readonly_bind_mounts[i]);